<template>
  <HomePanel ref="target" title="新鲜好物" sub="新鲜出炉 品质靠谱">
    <template #right>
      <xtx-more></xtx-more>
    </template>

    <ul ref="pannel" class="goods-list">
      <li v-for="item in list" :key="item.id">
        <RouterLink to="/">
          <!-- <img :src="item.picture" alt="" /> -->
          <img v-ilazy="item.picture" alt="" />

          <p class="name">{{ item.name }}</p>
          <p class="price">&yen;{{ item.price }}</p>
        </RouterLink>
      </li>
    </ul>
  </HomePanel>
</template>

<script>
import HomePanel from './home-panel'
import { findNewApi } from '@/api/home'
import { ref } from 'vue'
import { useDataLazy } from '@/hooks'

export default {
  components: {
    HomePanel
  },
  setup () {
    // 1.定义响应式数据
    const list = ref([])
    const getNew = async () => {
      const { result } = await findNewApi()
      list.value = result
    }
    // getNew()
    /**
     * 封装数据懒加载方法？
     * 核心：
     * 1. 把重复的代码放到一个函数里
     * 2. == 找不同 ==
     *    1. 留下相同的代码
     *    2. 不相同的代码=》进行抽象 =》设计成参数
     * 3. 组件需要使用函数内部的数据，可以return提供（暴露接口api）
     * 需求：
     * 说明❓：target ref对象，用来指定监控进入可视区的元素或组件
     * const { target } = useDataLazy()
     */

    const { target } = useDataLazy(getNew)

    return {
      list,
      target
    }
  }
}
</script>

<style scoped lang='less'>
.goods-list {
  display: flex;
  justify-content: space-between;
  height: 406px;
  li {
    width: 306px;
    height: 406px;
    background: #f0f9f4;
    // 激活效果
    transition: all 0.5s;
    &:hover {
      transform: translate3d(0, -6px, 0);
      box-shadow: 0 6px 8px rgba(0, 0, 0, 0.2);
    }
    // end
    img {
      width: 306px;
      height: 306px;
    }
    p {
      font-size: 22px;
      padding-top: 12px;
      text-align: center;
      text-overflow: ellipsis;
      overflow: hidden;
      white-space: nowrap;
    }
    .price {
      color: @priceColor;
    }
  }
}
</style>
